#ifndef ENTITY_H
#define ENTITY_H

#include "boost/shared_ptr.hpp"

#include "SFML/Graphics.hpp"

#include "AnimatedSprite.h"

class Entity
{
public: 
    Entity(const sf::Vector2f& position, AnimatedSpritePtr sprite); 
	virtual ~Entity();

    sf::Vector2f getPosition() const;
    void setPosition(const sf::Vector2f& position);

    sf::Vector2f getVelocity() const;
    void setVelocity(const sf::Vector2f& velocity);

    AnimatedSpritePtr getSprite() const;
    void setSprite(AnimatedSpritePtr sprite);

    virtual void move(const sf::Vector2f& distance);
    virtual void update(float delta) = 0;
private:
    sf::Vector2f position;
    sf::Vector2f velocity;
    AnimatedSpritePtr sprite;
};

typedef boost::shared_ptr<Entity> EntityPtr;

#endif